﻿//using System;
//using System.Collections.Generic;
//using System.Data.Entity.Migrations.Model;
//using System.Data.Entity.ModelConfiguration.Configuration;
//using System.IO;
//using System.Linq;
//using System.Reflection;
//using Autofac;
//using DalFactory;
//using Model;
//using Txy.IDal.Core;
//using Model.DbContext;
//using Model.Sys;

//namespace ConsoleApplicationTest
//{
//    class Program
//    {
//        #region ViewModel
//        private class ViewModel
//        {
//            public string LoginName { get; set; }
//            public string LoginPassword { get; set; }
//        }
//            #endregion


//        static void Main(string[] args)
//        {

//            #region Autofac注入

//            //var builder = new ContainerBuilder();

//            //#region 自动注册（依赖接口）

//            //Assembly[] assemblies = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll").Select(Assembly.LoadFrom).ToArray();
//            //Type baseType = typeof(IDependency);
//            //builder.RegisterAssemblyTypes(assemblies)
//            //    .Where(type => baseType.IsAssignableFrom(type) && !type.IsAbstract)
//            //    .AsSelf().AsImplementedInterfaces()
//            //    .PropertiesAutowired().InstancePerLifetimeScope();
//            ////.InstancePerHttpRequest();//开启之后，代码中不可手动去生产对象，不然报错。

//            //#endregion

//            //#region 补充注册（系统元数据类型,特殊处理接口的注册）

//            //builder.Register(a => { return DbContextUtil.GetCurrentDbContext(); }).As<ModelContainer>().InstancePerLifetimeScope();
//            //builder.Register(a => { return DalSessionUtil.GetCurrentDalSession(); }).As<IDalSession>().InstancePerLifetimeScope().PropertiesAutowired();

//            //#endregion


//            //var container = builder.Build();
//            //IDalSession dalsesson = container.Resolve<IDalSession>();

//            #endregion


//            //string strSql = "select A.* from UserInfo A where A.loginname='1'";
//            //IList<UserInfo> obj = dalSession.UserInfoDal.GetList(strSql);

//            //带参数的sql查询单表全部属性
//            //string strSql = "select * from UserInfo where loginname=@loginname and loginpassword=@loginpassword";
//            //DbParameter[] dbParameter =
//            //{
//            //    new SqlParameter("@loginname",username),
//            //    new SqlParameter("@loginpassword",password)
//            //};
//            //List<UserInfo> obj = dalSession.UserInfoDal.GetList(strSql, dbParameter);

//            //sql多列查询(ViewModel筛选)
//            //string strSql = "select A.loginname,A.loginpassword from UserInfo A where A.loginname='1'";
//            //IList<ViewModel> obj = dalSession.BaseDalExtend.GetList<ViewModel>(strSql);
//            //sql多列查询(ViewModel扩展，此处的UserInfo为扩展后的，有重复列名的，要自定义ViewModel)
//            //string strSql = "select A.*,B.* from UserInfo A,Test B where A.loginname=B.name";
//            //IList<ViewModel> obj = dalSession.BaseDalExtend.GetList<ViewModel>(strSql);

//            //linq查询多表(匿名类法)
//            //var linq = from A in dalSession.CurrentDbContext.UserInfo
//            //           from B in dalSession.CurrentDbContext.Test
//            //           where (A.LoginName == B.Name)
//            //           select new
//            //           {
//            //               UserInfo = A,
//            //               Test = B,
//            //           };
//            //UserInfo userinfo = linq.ToList()[0].UserInfo;
//            //Test test = linq.ToList()[0].Test;
//            //linq查询多表(ViewMOdel法)
//            //var linq = from A in dalSession.CurrentDbContext.UserInfo
//            //           from B in dalSession.CurrentDbContext.Test
//            //           where (A.LoginName == B.Name)
//            //           select new VMUserInfo
//            //           {
//            //               UserInfo = A,
//            //               Test = B,
//            //           };
//            //IList<VMUserInfo> lstResult = dalSession.BaseDalExtend.GetList<VMUserInfo>(linq);

//            //lambda查询单表
//            //string username = "1";
//            //string password = "1";
//            //UserInfo userinfo = dalsesson.UserInfoDal.GetEntity(a => a.LoginName == username && a.LoginPassword == password);
//            //var obj= dalsesson.UserInfoDal.GetEntity(1);

//            //linq分页查询
//            //var linq = from A in dalSession.CurrentDbContext.Test
//            //           .OrderBy(a => a.TestId)//分页前必须先排序，不然分页会报错
//            //           select A;
//            //int total = 0;
//            //IList<Test> lst = dalSession.BaseDalExtend.GetListByPage<Test>(5, 2, out total, linq);

//            //linq查询记录数
//            //var linq = from A in dalSession.CurrentDbContext.Test
//            //           select A;
//            //int count = dalSession.BaseDalExtend.GetSelectCount<Test>(linq);

              //无缓存查询
              //AsNoTracking();

//            //事务功能测试(成功)
//            //try
//            //{
//            //    DalSession.BaseDalExtend.BeginTrans();

//            //    int count = Add(new Test() {Name = "事务操作"});
//            //    int i = 0;
//            //    int j = 6/i;

//            //    DalSession.BaseDalExtend.Commit();
//            //}
//            //catch (Exception ex)
//            //{
//            //    DalSession.BaseDalExtend.Rollback();
//            //}
//            //finally
//            //{
//            //    DalSession.BaseDalExtend.DisposeTrans();
//            //}

//            //批量删除
//            //int[] idArr = new[] {1,2};
//            //DalSession.TestDal.Delete(a=>idArr.Contains(a.TestId));
//            //DalSession.SaveChanges();

//            //批量修改
//            //DalSession.TestDal.Update(new List<Test>(){new Test(){TestId = 3,Name = "333"},new Test(){TestId = 4,Name = "444"}});
//            //DalSession.SaveChanges();



//            System.Console.ReadKey();
//        }

//    }
//}
